home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.misc
- X-UNIX-From: dvadura@watdragon.waterloo.edu
- subject: v15i052: dmake version 3.6 (part 00/25)
- from: Dennis Vadura <dvadura@watdragon.waterloo.edu>
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 15, Issue 52
- Submitted-by: Dennis Vadura <dvadura@watdragon.waterloo.edu>
- Archive-name: dmake-3.6/part00
-
- #!/bin/sh
- # This is the DMAKE version 3.6 distribution. DMAKE is a Make like tool that
- # has been written by me and has been used by individuals at the University of
- # Waterloo for about a year and a half now. This release replaces the previous
- # version 3.5 release which is no longer supported. Please read the file
- # 'readme/release' which accompanies this distribution and describes details
- # of this release (This note is found in readme/cover).
- #
- # This release addresses a claim made by Mortice Kern Systems of Waterloo,
- # Ontario, Canada. See below or the file readme/release for details. I
- # therefore ask that all versions previous versions of dmake distributed as
- # version 3.5 patch level 1 and patch level 2 be removed from any archive
- # sites on which they reside and be replaced by this release.
- #
- # dmake is available for anonymous ftp from watmsg.uwaterloo.ca address is
- # 129.97.129.9. It is in the pub/src directory, set your mode to binary,
- # and copy either:
- #
- # dmake-3.6.tar.Z - compressed tar format
- # dmake-3.6.zoo - zoo archive
- #
- # dmake is different from other versions of make in that it supports significant
- # enhancements (See the man page). A short summary of the more important
- # ones follows:
- #
- # . support for portable makefiles
- # . runs on many platforms (DOS, generic unix [sysv and bsd4.3],
- # apollo, and others)
- # . significantly enhanced macro facilities
- # . transitive closure on inference graph
- # . sophisticated inference algorithm
- # . support for traversing the file sytem both during making of targets
- # and during inference
- # . %-meta rules for specifying rules to be used for inferring
- # prerequisites
- # . highly configurable
- # . support for libraries
- # . parallel making of targets on architectures that support it
- # . attributed targets
- # . text diversions
- # . group recipes
- # . swapping itself to DISK under MSDOS
- # . supports MKS extended argument passing convention
- #
- # All code found in this distribution is original and written by me except where
- # noted in the source and the following:
- #
- # - dbug package from Fred Fish (dmake DEBUG=1, to make a debugging version
- # of dmake)
- #
- # - malloc.c package, came from the net originally, author name wasn't
- # on it when I found it, I can't even remember where I got it.
- # -----------------------------------------------------------------------------
- #
- # DMAKE VERSION 3.6 RELEASE NOTES (readme/release file in distribution):
- #
- # MANDATORY REPLACEMENT FOR VERSION 3.5 PATCH LEVEL 1 and PATCH LEVEL 2
- #
- # Nature: This version of dmake MUST replace all versions of dmake 3.5 patch
- # ------- levels 1 and 2, and all versions of dmake 3.5 patch level 1 and 2
- # must then be DELETED. This release addresses several issues.
- #
- # 1. Copyright infringement claim made by MKS, of Waterloo.
- # 2. Modifications to text diversion processing.
- # 3. Support for DOS Swapping, and MKS argument passing.
- # 4. Other minor nits and tweaks.
- #
- # This distribution advances dmake to Version 3.6, patch level 1. This
- # version is certified free of MKS copyrighted code. See below for
- # details.
- #
- # Availability:
- # -------------
- # dmake is available via anonymous ftp from watmsg.uwaterloo.edu
- # (129.97.129.9) as:
- #
- # pub/src/dmake-3.6.tar.Z
- # pub/src/dmake-3.6.zoo
- #
- # and comes in either a compressed tar or zoo archive take your pick.
- #
- # Acknowledgements:
- # -----------------
- # Thanks to all who submitted code for new features, suggestions for
- # improvements, and bug fixes. Special thanks to those who helped
- # test this version of dmake on the many platforms that the
- # distribution now supports. I have tried to make sure no gotchas
- # remain, if you encounter problems installing or running dmake please
- # let me know. As always, I am always happy to receive e-mail.
- #
- #
- # DETAILS OF CHANGES:
- # ===================
- #
- # MKS Copyright Infringement:
- # ---------------------------
- # Due to a misunderstanding over past contractual obligations between
- # myself and Mortice Kern Systems of Waterloo, Ontario, Canada (MKS),
- # the original posting of dmake unitentionally contains some code
- # derived from MKS proprietary code.
- #
- # This version rectifies that situation and MUST replace all versions
- # of DMAKE and DMAKE patches that have been previously distributed.
- # Please delete from any archive site versions of DMAKE source code
- # labeled 3.5 patch level 1 or patch level 2 and dmake 3.5 patch 1.
- #
- # Version 3.6 of the dmake source replaces *ALL* MKS proprietary code.
- # In particular, putenv.c in the bsd43 and sysvr1 directories is new.
- # Three routines in percent.c; Add_dfa, Construct_dfa, and Advance_dfa
- # have been replaced. Lastly, TEXT DIVERSION processing has been removed
- # from make.c and <+...+> constructions are replaced by the $(mktmp ...)
- # construct (see below for more details). The changes relating to the
- # above mentioned modifications have been reviewed by MKS and certified by
- # MKS to be free of MKS proprietary code. The note below is from MKS
- # and releases dmake version 3.6 patch level 1 from any MKS copyright
- # infringement claims.
- #
- # "MKS has reviewed the latest sources, as of 90.09.20,
- # for the files make.c, putenv.c, and percent.c, which
- # are part of the program dmake version 3.6, and found
- # these files to be free of MKS proprietary source code."
- #
- # No functionality is lost as a result of these changes, however
- # certain constructs may have to be expressed using a new syntax. See
- # the documentation and the comments below for details.
- #
- #
- # Text Diversion Processing:
- # --------------------------
- # As alluded to above, the <+...+> text diversion facility has been
- # officially replaced by a new facility of the form $(mktmp ...) details of
- # which may be found in the TEXT DIVERSION section of the documentation.
- # Briefly, the construct:
- #
- # exe:; link @<+$(OBJFILES:t"+\n")+>
- #
- # is replaced by:
- #
- # exe:; link @$(mktmp $(OBJFILES:t"+\n"))
- #
- # similarly the construct:
- #
- # all :
- # echo hi <+
- # line1
- # line2 +>
- #
- # is replaced by:
- #
- # all :
- # echo hi $(mktmp\
- # line1\n\
- # line2)
- #
- # where the \n\ is added to the end of each line within the data portion of
- # the $(mktmp ...) construction. For a number of reasons it is my belief
- # that this new construct is a better implementation of text diversions than
- # the previous <+...+> as it can be used in macro expressions that appear
- # anywhere in the makefile.
- #
- # Compatibility is retained for previous versions of dmake that utilize
- # a simple form of the <+...+> construct. If your <+...+> constructs do not
- # span multiple lines (cf second example above), then the new version of
- # dmke will recognize these and will map them to the appropriate
- # $(mktmp ...) construct. Thus, If you use <+...+> and you do not allow the
- # interior data to span multiple lines and both <+ and +> appear as clear
- # text in the same recipe line or macro value, then dmake will process these
- # correctly and the output is 100% compatible to version 3.5 patch level 2.
- # Any other use of <+...+> must be converted to the new $(mktmp ...) form.
- #
- # The new form also provides for massaging the name of the temporary file
- # which replaces the text in the recipe. See the documentation regarding
- # the special macros USESHELL, TMPFILE, and DIVSHELL. This is of most use
- # in an MSDOS environment.
- #
- #
- # DOS Swapping, and MKS argument passing:
- # ---------------------------------------
- # dmake now supports swapping the executable image to secondary storage when
- # it executes a child. Swapping is enabled by setting the new attribute
- # .SWAP to on, either for a target or globally, or by specifying the '%'
- # modifier to a recipe line. So for example:
- #
- # xx .SWAP :; recipe
- #
- # and
- #
- # xx :;% recipe
- #
- # are equivalent.
- #
- # The MKS DOS argument passing conventions are now supported, and dmake is
- # able to communicate with programs that understand those conventions. The
- # global variable .MKSARGS is used to enable/disable this facility. With
- # these modifications, dmake now supports long command lines for running
- # commands that understand the MKS argument passing convention, and it does
- # not run into memory limitations when executing child processes in most
- # situations.
- #
- # Both .SWAP and .MKSARGS are ignored by non-MSDOS versions of dmake.
- # See the manual page for further details.
- #
- #
- # Other tweaks modifications and BUG FIXES:
- # -----------------------------------------
- # -- Slight modifications to msdos/startup.mk files. Set DIRSEPSTR to \
- # if using command.com as the shell, otherwise set internaly to /.
- # Removed -o $@ from MSC startup.mk, and added $(ASFLAGS) to %$O : %$S
- # rule, in all default DOS startup.mk files.
- #
- # -- Added POSIX '+' character to start of recipe lines. You can use this
- # to force the recipe line to be executed by a shell, in addition to the
- # test used for .SHELLMETAS.
- #
- # To make the '+' fit into the dmake mold, a new attribute has been created.
- # the .USESHELL attribute forces the use of a shell for the target or
- # recipe group for which it is specified. If it is specified as a global
- # attribute then all recipes executed will use a shell. The macro variable
- # .USESHELL corresponds to the special target '.USESHELL :' in the same way
- # that .IGNORE corresponds to '.IGNORE :'.
- #
- # -- Added *= and *:= macro assignmen operator, patches from
- # Piercarlo Grandi <pcg@compsci.aberystwyth.ac.uk>, see the documentation
- # for more details.
- #
- # -- Changed makefile.mk to force use of a shell (via '+') to make OBJDIR,
- # doesn't break on baren DOS systems that way :-). Many other small changes
- # to msdos and unix versions of various config.mk files.
- #
- # -- Added two new macros related to diversion file processing.
- # See the TEXT DIVERSIONS section of the man page for an explanation of this
- # functionality.
- #
- # TMPFILE - is set to the name of the temporary file whenever
- # a temporary file is opened by dmake.
- # USESHELL- It's value is 'no' if the current recipe line is not forced
- # to use a shell via a '+' or .USESHELL directive. It's
- # value is 'yes' if such a directive is given.
- # DIVFILE - is defined in startup.mk and gives a macro to use to set
- # name of the diversion file, (under UNIX, DIVFILE defaults to
- # $(TMPFILE), under MSDOS it is the value of $(TMPFILE) with
- # any / replaced by the appropriate number of \ depending, on
- # if a shell is used or not).
- #
- # -- \\ appearing at the end of a line does not cause a continuation to the next
- # line.
- #
- # -- Modified the definition of macro supplied from the command line to allow
- # macros defined using += or +:= to be modified further from within the
- # makefile.
- #
- # -- Added MAKETARGETS macro which contains the name of the target(s), if any,
- # specified on the command line.
- #
- # -- Modified Pack_argv in sysintf.c to use dynamic memory allocation rather
- # than limit it to a fixed number of arguments.
- #
- # -- BIG BUG FIX:
- # This one is cute. It turns out that all individual recipe line
- # attributes supplied via '@', '-', and now '+' and '%' characters were
- # getting or'ed together and applied to ALL recipe lines of the recipe, yulk!
- #
- # -- BUG FIX:
- # Fixed off by one error in make.c:_print_cmnd when remapping \n after
- # printing the text.
- #
- # -- BUG FIX: Bug reported by holos0!lbr@gatech.edu
- # Inferred prerequisites were not getting made when a target was found to
- # be out of date relative to a non-inferred prerequisite, and the inferred
- # prerequisite did not exist but the file it could be made from did and was
- # not out of date relative to the target. This was a problem with the
- # following setup.
- #
- # file.o : header.h
- #
- # File system contains file.o, header.h and RCS/file.c,v, If file.o is newer
- # than RCS/file.c,v and older than header.h, then dmake didn't check out
- # file.c prior to doing the compile.
- #
- # -- BUG FIX: Applied patch from UUCP: twc@legal or ...sun!ys2!legal!twc
- # to msdos/_chdir.c to fix changing of directory in OS/2 protected mode
- #
- # -- BUG FIX: Applied patch from UUCP: twc@legal or ...sun!ys2!legal!twc
- # to msdos/switchar.c to read environment variable SWITCHAR instead of using
- # unsupported call in DOS. OS/2 doesn't have _get_switchar call! (It damn
- # well should though! Microsoft is really dumb in this respect!)
- #
- # Extended this patch to use SWITCHAR environment variable in all DOS
- # versions. This ensures that DOS 4.0 can selectively change SWITCHAR by
- # using the environment variable.
- #
- # Dmake now first gets SWITCHAR from the environment and if that fails it
- # tries the unsupported MSDOS call. Under UNIX getswitchar returns '-'
- # as before.
- #
- # -- BUG FIX: Changed the line _ar.ar_size = atol(arhdr.ar_size) found in
- # ar_scan() in arlib.c to not use atol() if ASCARCH is FALSE. I forget who
- # reported this one :-)
- # -----------------------------------------------------------------------------
- exit 0
-
-